package com.suse.warmstill.common.handler;


import com.suse.warmstill.common.Datas;
import com.suse.warmstill.common.enums.RedisEnum;
import com.suse.warmstill.common.utils.RedisCache;
import com.suse.warmstill.common.utils.UserIdThreadLocal;
import com.suse.warmstill.vo.UserInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.simp.stomp.StompCommand;
import org.springframework.messaging.simp.stomp.StompHeaderAccessor;
import org.springframework.messaging.support.ChannelInterceptor;
import org.springframework.messaging.support.MessageHeaderAccessor;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;

import javax.annotation.Resource;

@Slf4j
public class CustomerInterceptor implements ChannelInterceptor {


    // 通过方法获取消息
    @Override
    public Message<?> preSend(Message<?> message, MessageChannel channel) {
        // 获取用户状态信息，是否发送消息
        StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);

        // 判断是否建立连接
        if (accessor.getCommand().equals(StompCommand.CONNECT)) {
            String sessionId = accessor.getSessionId();
            log.info("已经建立连接，sessionId-->{}", sessionId);
            // 获取UserInfo信息的时候，一定在建立连接的基础上

            // 获取UserInfo信息的时候，一定在建立连接的基础上
            LinkedMultiValueMap<String, String> headers = (LinkedMultiValueMap<String, String>) message.getHeaders().get("nativeHeaders");

            // 获取用户名以及房间号,客户端需要在消息头中传递username，roomId
            // String senderId = headers.get("senderId").get(0);
            //     log.info("连接的senderId---{}",senderId);


            // 封装
            UserInfo userInfo = new UserInfo("222");

            Datas.sessionUserInfo.put(sessionId, userInfo);


        }


        // 判断用户聊天内容是否合法
        // 判断是否建立连接
        if (accessor.getCommand().equals(StompCommand.CONNECT)) {
            // 获取连接message
            Object payload = message.getPayload();
            System.out.println("payload：" + payload);
            // 进一步获取聊天内容....
        }
        return message;
    }
}
